
package generique;



/**
 * 
 * Permet de travailler avec des nombres premiers.
 * 
 * @author Valentin Brémond
 * 
 * @version 1.0
 * 
 */
public abstract class NombresPremiers
{
	/**
	 * Permet de savoir si un nombre est premier ou pas.
	 * 
	 * @param nombre Le nombre à vérifier.
	 * 
	 * @return true si le nombre est premier, false sinon.
	 */
	public static boolean estPremier (long nombre)
	{
		// On vérifie si le nombre est un multiple de 2
		if (nombre % 2 == 0)
		{
			// Si oui, il n'est pas premier
			return false;
		}

		// Sinon, on vérifie juste les impairs
		for (int i = 3; i * i <= nombre; i += 2)
		{
			if (nombre % i == 0)
			{
				return false;
			}
		}
		
		return true;
	}
	
	
	
	/**
	 * Permet de générer un nombre premier.
	 *
	 * @param min Le nombre premier minimum à générer.
	 * @param max Le nombre premier maximum à générer.
	 * 
	 * @return Un nombre premier aléatoire dans l'intervalle demandé.
	 */
	public static long genererNombrePremier (long min, long max)
	{
		long nombre = 4;
		
		while (!estPremier (nombre))
		{
			nombre = (long) (Math.random () * ((max - min) + 1)) + min;
		}
		
		return nombre;
	}
}
